package company_request

import (
	"os"
	"private-go-sdk/http"
)

type CompanyCreateRequest struct {
	// 【单位名称】单位名称
	Name string `json:"name"`
	// 【营业执照】营业执照 【作用】<br>上传页面要认证的营业执照 【传参方式】<br>form-data方式的文件上传
	License *os.File `json:"license"`
	// 【法人授权书】法人授权书 【作用】<br>认证需要的认证授权书 【传参方式】<br>form-data方式的文件上传 【特殊说明】<br>tenantType为INNER_COMPANY（创建内部单位）时必填
	LegalAuthorization *os.File `json:"legalAuthorization,omitempty"`
	// 【统一社会信用代码/工商注册号】统一社会信用代码/工商注册号
	RegisterNo string `json:"registerNo"`
	// 【法定代表人/负责人姓名】法定代表人/负责人姓名
	LegalPerson string `json:"legalPerson"`
	// 【法定代表人证件照类型】法定代表人证件照类型 【作用】<br>确认法定代表人证件照类型 【传参方式】<br>传入枚举类对应的String字符串，对应枚举：<br>IDCARD（二代身份证）<br>PASSPORT（护照）<br>HKMP（港澳通行证）<br>MTPS（台胞证）<br>认证方式选择1（法定代表人认证）时传入，不传值默认为IDCARD（二代身份证）
	PaperType string `json:"paperType,omitempty"`
	// 【法定代表人证件号】法定代表人证件号
	LegalPersonld string `json:"legalPersonld,omitempty"`
	// 【认证申请人】认证申请人
	Charger string `json:"charger"`
	// 【申请人手机号】申请人手机号 【作用】<br>关联申请人账号 【传参方式】<br>手机号允许使用大陆、台湾和香港的手机号，台湾和香港的手机号格式为：区号+空格+手机号，例：852 9xxxxxxx 【特殊说明】<br>mobile 与 email 至少填写一个，优先级为mobile > email
	Mobile string `json:"mobile,omitempty"`
	// 【申请人邮箱】申请人邮箱 【作用】<br>关联申请人账号 【传参方式】<br>邮箱传入符合邮箱的格式的字符串，例：xxxxxxxx@163.com 【特殊说明】<br>mobile 与 email 至少填写一个，优先级为mobile > email
	Email string `json:"email,omitempty"`
	// 【地区】地区 【作用】<br>确认提交认证的企业所属地区 【参数说明】<br>传入枚举类对应的String字符串，对应枚举：<br>CN（中国大陆 ）<br>TW（中国台湾）<br>HK（中国香港）<br>MO（中国澳门）<br>OTHER（其他国家/地区）<br>默认为CN（中国大陆 ）
	Area string `json:"area,omitempty"`
	// 【所在区域】所在区域
	Province string `json:"province,omitempty"`
	// 【内外部单位】内外部单位 【作用】<br>用于区分提交企业为内部企业还是外部企业 【传参方式】<br>传入枚举类对应的String字符串，对应枚举：INNER_COMPANY（内部单位），COMPANY（外部单位）
	TenantType string `json:"tenantType"`
	// 【第三方业务系统单位id】第三方业务系统单位id 【特殊说明】<br>业务系统不传值时会随机生成一个第三方业务系统单位id，认证成功后该值会返回第三方业务系统
	OpenCompanyId string `json:"openCompanyId,omitempty"`
	// 【操作人名称】操作人名称
	Operator string `json:"operator,omitempty"`
	// 【单位类型】单位类型 【作用】<br>确认企业提交时的单位类型 【传参方式】<br>传入Integer值，分别代表：<br>1（企业） <br>2（个体工商户）<br> 3（政府）<br> 4（其他）<br>5（事业单位）<br>默认为企业
	CompanyType *int64 `json:"companyType,omitempty"`
	// 【认证成功是否短信通知】认证成功是否短信通知 【作用】<br>单位创建成功，是否短信通知认证申请人 【传参方式】<br>默认false（不通知），传入true/false
	Remind string `json:"remind,omitempty"`
	// 【是否客户】是否客户 【作用】<br>是否是平台客户 【传参方式】<br>是/否，默认否
	Customer string `json:"customer,omitempty"`
}
func (obj CompanyCreateRequest) GetUrl() string {
    return "/company/create"
}

func (obj CompanyCreateRequest) GetHttpParameter() *http.HttpParameter {
    parameter := http.NewPostHttpParameter()
    parameter.AddParam("name", obj.Name)
    parameter.AddParam("registerNo", obj.RegisterNo)
    parameter.AddParam("legalPerson", obj.LegalPerson)
    parameter.AddParam("paperType", obj.PaperType)
    parameter.AddParam("legalPersonld", obj.LegalPersonld)
    parameter.AddParam("charger", obj.Charger)
    parameter.AddParam("mobile", obj.Mobile)
    parameter.AddParam("email", obj.Email)
    parameter.AddParam("area", obj.Area)
    parameter.AddParam("province", obj.Province)
    parameter.AddParam("tenantType", obj.TenantType)
    parameter.AddParam("openCompanyId", obj.OpenCompanyId)
    parameter.AddParam("operator", obj.Operator)
    parameter.AddParam("companyType", obj.CompanyType)
    parameter.AddParam("remind", obj.Remind)
    parameter.AddParam("customer", obj.Customer)
    parameter.AddFiles("license", obj.License)
    parameter.AddFiles("legalAuthorization", obj.LegalAuthorization)
    return parameter
}
